home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2007 June
/
PCWorld_2007-06_cd.bin
/
v cisle
/
wua
/
WindowsVistaUpgradeAdvisor.msi
/
_2E273B4721FD61938FC8C146C395840E
/
BktOutputTransform.xsl
< prev
next >
Wrap
Extensible Markup Language
|
2007-02-06
|
72KB
|
1,546 lines
<?xml version="1.0"?>
<!-- ==================================================================== -->
<!-- ============ Copyright (c) 2006 Microsoft Corporation ============= -->
<!-- ==================================================================== -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml" indent="yes" />
<!-- ============================================ -->
<!-- ========== VARIABLE SECTION START ========== -->
<!-- ============================================ -->
<xsl:variable name="NEWLINE">
<xsl:text> </xsl:text>
</xsl:variable>
<xsl:variable name="LOWERCASE" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:variable name="UPPERCASE" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
<!-- ========================================== -->
<!-- ========== VARIABLE SECTION END ========== -->
<!-- ========================================== -->
<xsl:template match="/">
<Log>
<!-- ============================== -->
<!-- ==== SystemList Transform ==== -->
<!-- ============================== -->
<xsl:if test="//SystemList">
<xsl:call-template name="CommonSystemList" />
</xsl:if>
<!-- ================================ -->
<!-- ==== Intermediate Transform ==== -->
<!-- ================================ -->
<xsl:if test="//SoftwareList/Application">
<xsl:call-template name="IntermediateSoftwareList" />
</xsl:if>
<!-- ========================= -->
<!-- ==== Final Transform ==== -->
<!-- ========================= -->
<xsl:if test="//SoftwareList/FinalOutput/Application">
<xsl:call-template name="FinalSoftwareList" />
</xsl:if>
</Log>
</xsl:template>
<!-- ===================================================== -->
<!-- ========= SoftwareList (Intermediate) START ========= -->
<!-- ===================================================== -->
<xsl:template name="IntermediateSoftwareList">
<SoftwareList>
<xsl:for-each select="//SoftwareList/Application">
<!-- =================================================================== -->
<!-- == Exclude any of the following: == -->
<!-- == OS component applications == -->
<!-- == Service application, unless inferred from ARP == -->
<!-- == Applications whose name contains 'Internet Explorer' == -->
<!-- == unless the name is 'Microsoft Internet Explorer Logging' == -->
<!-- =================================================================== -->
<xsl:if test="( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), ' OPERATING SYSTEM') and
contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'WINDOWS')) ) and
( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'INTERNET EXPLORER')) or
contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'TOOLBAR') or
translate(@Name,$LOWERCASE,$UPPERCASE)='MICROSOFT INTERNET EXPLORER LOGGING' ) and
( not(./@OsComponent) )">
<xsl:copy>
<xsl:for-each select="@*">
<xsl:copy />
</xsl:for-each>
<xsl:call-template name="GetIndicator" />
<xsl:call-template name="GetStaticPrptyAndDynamicData" />
</xsl:copy>
</xsl:if>
</xsl:for-each>
</SoftwareList>
</xsl:template>
<!-- =================================================== -->
<!-- ========= SoftwareList (Intermediate) END ========= -->
<!-- =================================================== -->
<!-- ============================================== -->
<!-- ========= SoftwareList (Final) START ========= -->
<!-- ============================================== -->
<xsl:template name="FinalSoftwareList">
<EditScript>
<xsl:call-template name="GetUpdatedApplications" />
<xsl:call-template name="GetInsertedApplications" />
<xsl:call-template name="GetDeletedApplications" />
</EditScript>
<SoftwareList>
<xsl:for-each select="//SoftwareList/FinalOutput/Application[@State!='3']">
<xsl:if test="( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), ' OPERATING SYSTEM') and
contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'WINDOWS')) ) and
( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'INTERNET EXPLORER')) or
contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'TOOLBAR') or
translate(@Name,$LOWERCASE,$UPPERCASE)='MICROSOFT INTERNET EXPLORER LOGGING' ) and
( not(./@OsComponent) )">
<xsl:copy>
<xsl:for-each select="@*">
<xsl:copy />
</xsl:for-each>
<xsl:call-template name="GetIndicator" />
<xsl:call-template name="GetStaticPrptyAndDynamicData" />
</xsl:copy>
</xsl:if>
</xsl:for-each>
</SoftwareList>
</xsl:template>
<!-- ============================================ -->
<!-- ========= SoftwareList (Final) END ========= -->
<!-- ============================================ -->
<!-- =================================== -->
<!-- ==== Copy Updated Applications ==== -->
<!-- =================================== -->
<xsl:template name="GetUpdatedApplications">
<Update>
<xsl:for-each select="//SoftwareList/FinalOutput/Application[@State='1']"><!-- Update (State=1) -->
<xsl:if test="( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), ' OPERATING SYSTEM') and
contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'WINDOWS')) ) and
( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'INTERNET EXPLORER')) or
contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'TOOLBAR') or
translate(@Name,$LOWERCASE,$UPPERCASE)='MICROSOFT INTERNET EXPLORER LOGGING' ) and
( not(./@OsComponent) )">
<xsl:copy>
<xsl:for-each select="@*">
<xsl:copy />
</xsl:for-each>
<xsl:call-template name="GetIndicator" />
<xsl:call-template name="GetStaticPrptyAndDynamicData" />
</xsl:copy>
</xsl:if>
</xsl:for-each>
</Update>
</xsl:template>
<!-- ==================================== -->
<!-- ==== Copy Inserted Applications ==== -->
<!-- ==================================== -->
<xsl:template name="GetInsertedApplications">
<Insert>
<xsl:for-each select="//SoftwareList/FinalOutput/Application[@State='2']"><!-- Insert (State=2) -->
<xsl:if test="( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), ' OPERATING SYSTEM') and
contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'WINDOWS')) ) and
( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'INTERNET EXPLORER')) or
contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'TOOLBAR') or
translate(@Name,$LOWERCASE,$UPPERCASE)='MICROSOFT INTERNET EXPLORER LOGGING' ) and
( not(./@OsComponent) )">
<xsl:copy>
<xsl:for-each select="@*">
<xsl:copy />
</xsl:for-each>
<xsl:call-template name="GetIndicator" />
<xsl:call-template name="GetStaticPrptyAndDynamicData" />
</xsl:copy>
</xsl:if>
</xsl:for-each>
</Insert>
</xsl:template>
<!-- =================================== -->
<!-- ==== Copy Deleted Applications ==== -->
<!-- =================================== -->
<xsl:template name="GetDeletedApplications">
<Delete>
<xsl:for-each select="//SoftwareList/FinalOutput/Application[@State='3']"><!-- Delete (State=3) -->
<xsl:if test="( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), ' OPERATING SYSTEM') and
contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'WINDOWS')) ) and
( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'INTERNET EXPLORER')) or
contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'TOOLBAR') or
translate(@Name,$LOWERCASE,$UPPERCASE)='MICROSOFT INTERNET EXPLORER LOGGING' ) and
( not(./@OsComponent) )">
<xsl:copy>
<xsl:for-each select="@*">
<xsl:copy />
</xsl:for-each>
<xsl:call-template name="GetIndicator" />
<xsl:call-template name="GetStaticPrptyAndDynamicData" />
</xsl:copy>
</xsl:if>
</xsl:for-each>
</Delete>
</xsl:template>
<!-- =============================== -->
<!-- ==== Copy Indicators START ==== -->
<!-- =============================== -->
<xsl:template name="GetIndicator">
<Indicators>
<!-- ====================================== -->
<!-- ====== Assume flat element list ====== -->
<!-- ====================================== -->
<!-- ================================ -->
<!-- ============ Msi =============== -->
<!-- ================================ -->
<xsl:call-template name="CopyIndicator">
<xsl:with-param name="TYPE" select="'Msi'" />
<xsl:with-param name="GROUP_NAME" select="'MsiIndicators'" />
</xsl:call-template>
<!-- ================================ -->
<!-- ========== Manifest ============ -->
<!-- ================================ -->
<xsl:call-template name="CopyIndicator">
<xsl:with-param name="TYPE" select="'Manifest'" />
<xsl:with-param name="GROUP_NAME" select="'ManifestIndicators'" />
</xsl:call-template>
<!-- ================================ -->
<!-- ====== WindowsComponent ======== -->
<!-- ================================ -->
<xsl:call-template name="CopyIndicator">
<xsl:with-param name="TYPE" select="'WindowsComponent'" />
<xsl:with-param name="GROUP_NAME" select="'WindowsComponentIndicators'" />
</xsl:call-template>
<!-- ================================ -->
<!-- ==== ServiceControlManager ===== -->
<!-- ================================ -->
<xsl:call-template name="CopyIndicator">
<xsl:with-param name="TYPE" select="'ServiceControlManager'" />
<xsl:with-param name="GROUP_NAME" select="'ServiceControlManagerIndicators'" />
</xsl:call-template>
<!-- ================================ -->
<!-- ========== Directory =========== -->
<!-- ================================ -->
<xsl:call-template name="CopyIndicator">
<xsl:with-param name="TYPE" select="'Directory'" />
<xsl:with-param name="GROUP_NAME" select="'DirectoryIndicators'" />
</xsl:call-template>
<!-- ================================ -->
<!-- ====== AddRemoveProgram ======== -->
<!-- ================================ -->
<xsl:call-template name="CopyIndicator">
<xsl:with-param name="TYPE" select="'AddRemoveProgram'" />
<xsl:with-param name="GROUP_NAME" select="'AddRemoveProgramIndicators'" />
</xsl:call-template>
<!-- ================================ -->
<!-- ============ Shell ============= -->
<!-- ================================ -->
<xsl:call-template name="CopyIndicator">
<xsl:with-param name="TYPE" select="'Shell'" />
<xsl:with-param name="GROUP_NAME" select="'ShellIndicators'" />
</xsl:call-template>
<!-- ================================ -->
<!-- =========== AppPath ============ -->
<!-- ================================ -->
<xsl:call-template name="CopyIndicator">
<xsl:with-param name="TYPE" select="'AppPath'" />
<xsl:with-param name="GROUP_NAME" select="'AppPathIndicators'" />
</xsl:call-template>
<!-- ================================ -->
<!-- =========== Registry =========== -->
<!-- ================================ -->
<xsl:call-template name="CopyIndicator">
<xsl:with-param name="TYPE" select="'Registry'" />
<xsl:with-param name="GROUP_NAME" select="'RegistryIndicators'" />
</xsl:call-template>
<!-- ================================ -->
<!-- ========== PathEnvVar ========== -->
<!-- ================================ -->
<xsl:call-template name="CopyIndicator">
<xsl:with-param name="TYPE" select="'PathEnvironmentVariable'" />
<xsl:with-param name="GROUP_NAME" select="'PathEnvVarIndicators'" />
</xsl:call-template>
<!-- ================================ -->
<!-- =========== FileExt ============ -->
<!-- ================================ -->
<xsl:call-template name="CopyIndicator">
<xsl:with-param name="TYPE" select="'FileExtensionHandler'" />
<xsl:with-param name="GROUP_NAME" select="'FileExtIndicators'" />
</xsl:call-template>
</Indicators>
</xsl:template>
<!-- ============================= -->
<!-- ==== Copy Indicators END ==== -->
<!-- ============================= -->
<!-- =========================================================== -->
<!-- ==== Copy StaticProperties and DynamicProperties START ==== -->
<!-- =========================================================== -->
<xsl:template name="GetStaticPrptyAndDynamicData">
<StaticProperties>
<!-- ====================================== -->
<!-- ====== Assume flat element list ====== -->
<!-- ====================================== -->
<!-- ============================================== -->
<!-- ================== File START ================ -->
<!-- ============================================== -->
<Files>
<xsl:call-template name="CopyStaticPrptyAndDynamicData">
<xsl:with-param name="TYPE" select="'File'" />
</xsl:call-template>
</Files>
</StaticProperties>
</xsl:template>
<!-- =================================== -->
<!-- ==== Copy StaticProperties END ==== -->
<!-- =================================== -->
<!-- ====================================== -->
<!-- ==== Copy Indicator Generic START ==== -->
<!-- ====================================== -->
<xsl:template name="CopyIndicator">
<xsl:param name="TYPE" />
<xsl:param name="GROUP_NAME" />
<xsl:if test="./StaticProperty[@Type=$TYPE]">
<xsl:element name="{$GROUP_NAME}">
<xsl:for-each select="StaticProperty[@Type=$TYPE]">
<xsl:variable name="ELEMENTNAME" select="./@Type" />
<xsl:variable name="TYPE_ATTR_NAME" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE_ATTR_NAME">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:if>
</xsl:template>
<!-- ==================================== -->
<!-- ==== Copy Indicator Generic END ==== -->
<!-- ==================================== -->
<!-- ============================================================ -->
<!-- ==== Copy StaticProperty and Dynamic Data Generic START ==== -->
<!-- ============================================================ -->
<xsl:template name="CopyStaticPrptyAndDynamicData">
<xsl:param name="TYPE" />
<xsl:if test="./StaticProperty[@Type=$TYPE]">
<xsl:for-each select="StaticProperty[@Type=$TYPE]">
<xsl:variable name="ELEMENTNAME" select="./@Type" />
<xsl:variable name="TYPE_ATTR_NAME" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE_ATTR_NAME">
<xsl:copy />
</xsl:if>
</xsl:for-each>
<!-- ============================================== -->
<!-- <<<<<< Shift to left for easier reading <<<<<< -->
<!-- ============================================== -->
<!-- ============================================== -->
<!-- ============ DynamicProperty START =========== -->
<!-- ============================================== -->
<xsl:if test="DynamicProperty">
<DynamicProperties>
<!-- ============================================== -->
<!-- ============ FileOpenedList START ============ -->
<!-- ============================================== -->
<xsl:if test="DynamicProperty[@Type='FileOpen']">
<FileOpenedList>
<xsl:for-each select="DynamicProperty[@Type='FileOpen']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</FileOpenedList>
</xsl:if>
<!-- ============================================== -->
<!-- ============= FileOpenedList END ============= -->
<!-- ============================================== -->
<!-- ============================================== -->
<!-- ============= IeceEventList START ============ -->
<!-- ============================================== -->
<xsl:if test="DynamicProperty[contains(string(@Type), 'Iece')]">
<IeceEventList>
<!-- ============================================== -->
<!-- ========== IeceMimeHandling01 START ========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceMimeHandling01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========== IeceMimeHandling02 START ========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceMimeHandling02']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========== IeceMimeHandling03 START ========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceMimeHandling03']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ======== IeceWindowRestrictions01 START ====== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceWindowRestrictions01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ============ IeceZoneElev01 START ============ -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceZoneElev01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- =========== IeceBinaryBhvr01 START =========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceBinaryBhvr01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ============ IeceObjCache01 START ============ -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceObjCache01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========== IeceActiveXBlock01 START ========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceActiveXBlock01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========== IeceActiveXBlock02 START ========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceActiveXBlock02']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========== IeceActiveXBlock03 START ========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceActiveXBlock03']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ============= IecePUBlock01 START ============ -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IecePUBlock01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========== IeceDownloadBlock01 START ========= -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceDownloadBlock01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ============== IeceLMZL01 START ============== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceLMZL01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ======= IeceURLCreationFailure01 START ======= -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceURLCreationFailure01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========== IeceIDNNavigation01 START ========= -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceIDNNavigation01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- =========== IeceSSLNavBlock01 START ========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceSSLNavBlock01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========= IeceScriptUrlBlock01 START ========= -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceScriptUrlBlock01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========= IeceScriptUrlBlock02 START ========= -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceScriptUrlBlock02']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ======== IeceAntiphishingBlock01 START ======= -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceAntiphishingBlock01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========== IeceManageAddOns01 START ========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceManageAddOns01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========= IeceProtectedMode01 START ========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceProtectedMode01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ===== IeceSubframeNavigateBlock01 START ====== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceSubframeNavigateBlock01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- === IeceCreateURLMonikerDifference01 START === -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceCreateURLMonikerDifference01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ============= IeceCSSFixes01 START ============ -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceCSSFixes01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ====== IeceUIPIExtensionBlocked01 START ====== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='IeceUIPIExtensionBlocked01']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</IeceEventList>
</xsl:if>
<!-- ============================================== -->
<!-- ============== IeceEventList END ============= -->
<!-- ============================================== -->
<!-- ============================================== -->
<!-- ============ ModuleLoadList START ============ -->
<!-- ============================================== -->
<xsl:if test="DynamicProperty[@Type='ModuleLoad']">
<ModuleLoadedList>
<xsl:for-each select="DynamicProperty[@Type='ModuleLoad']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</ModuleLoadedList>
</xsl:if>
<!-- ============================================== -->
<!-- ============= ModuleLoadList END ============= -->
<!-- ============================================== -->
<!-- ============================================== -->
<!-- ========== RegistryAccessList START ========== -->
<!-- ============================================== -->
<xsl:if test="DynamicProperty[@Type='RegistryAccess']">
<RegistryAccessList>
<xsl:for-each select="DynamicProperty[@Type='RegistryAccess']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</RegistryAccessList>
</xsl:if>
<!-- ============================================== -->
<!-- =========== RegistryAccessList END =========== -->
<!-- ============================================== -->
<!-- ============================================== -->
<!-- ============ UacceEventList START ============ -->
<!-- ============================================== -->
<xsl:if test="DynamicProperty[contains(string(@Type), 'Uacce')]">
<UacceEventList>
<!-- ============================================== -->
<!-- ======== UacceProcessElevation START ========= -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='UacceProcessElevation']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ======== UacceFileVirtualization START ======= -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='UacceFileVirtualization']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========= UacceFileRestriction START ========= -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='UacceFileRestriction']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ====== UacceFileOpenRestriction START ======== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='UacceFileOpenRestriction']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ====== UacceRegistryVirtualization START ===== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='UacceRegistryVirtualization']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ====== UacceRegistryRestriction START ======== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='UacceRegistryRestriction']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ===== UacceRegistryOpenRestriction START ===== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='UacceRegistryOpenRestriction']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========= UacceExistingFix START ============= -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='UacceExistingFix']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ======== UacceIniRedirection START =========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='UacceIniRedirection']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- =================================================== -->
<!-- ======== UacceRestrictedNamespace START =========== -->
<!-- =================================================== -->
<xsl:for-each select="DynamicProperty[@Type='UacceRestrictedNamespace']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</UacceEventList>
</xsl:if>
<!-- ============================================== -->
<!-- =========== UacceEventList END =============== -->
<!-- ============================================== -->
<!-- ============================================== -->
<!-- ========DeprecationEventList START =========== -->
<!-- ============================================== -->
<xsl:if test="DynamicProperty[contains(string(@Type), 'Deprecation')]">
<DeprecationEventList>
<!-- ============================================== -->
<!-- ========= DeprecationDllType START =========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='DeprecationDllType']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========= DeprecationExeType START =========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='DeprecationExeType']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========= DeprecationRegType START =========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='DeprecationRegType']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========= DeprecationApiType START =========== -->
<!-- ============================================== -->
<xsl:for-each select="DynamicProperty[@Type='DeprecationApiType']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</DeprecationEventList>
</xsl:if>
<!-- ============================================== -->
<!-- ====== Deprecation EventList END ============= -->
<!-- ============================================== -->
<!-- =========================================== -->
<!-- ============ GinaDllList START ============ -->
<!-- =========================================== -->
<xsl:if test="DynamicProperty[contains(string(@Type), 'GinaDll')]">
<GinaDllList>
<!-- ================================ -->
<!-- ======== GinaDll START ========= -->
<!-- ================================ -->
<xsl:for-each select="DynamicProperty[@Type='GinaDll']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</GinaDllList>
</xsl:if>
<!-- =========================================== -->
<!-- ============ GinaDllList END ============== -->
<!-- =========================================== -->
<!-- ============================================ -->
<!-- ============ Session0List START ============ -->
<!-- ============================================ -->
<xsl:if test="DynamicProperty[contains(string(@Type), 'Service')]">
<Session0List>
<!-- =========================================== -->
<!-- ======== ServiceInteractive START ========= -->
<!-- =========================================== -->
<xsl:for-each select="DynamicProperty[@Type='ServiceInteractive']">
<xsl:variable name="ELEMENTNAME2" select="./@Type" />
<xsl:variable name="TYPE2" select="name(./@Type)" />
<xsl:element name="{$ELEMENTNAME2}">
<xsl:for-each select="./@*">
<xsl:if test="name()!=$TYPE2">
<xsl:copy />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</Session0List>
</xsl:if>
<!-- ============================================ -->
<!-- ============ Session0List END ============== -->
<!-- ============================================ -->
</DynamicProperties>
</xsl:if>
<!-- =========================================== -->
<!-- =========== DynamicProperty END =========== -->
<!-- =========================================== -->
</xsl:element>
</xsl:for-each>
</xsl:if>
</xsl:template>
<!-- ========================================================== -->
<!-- ==== Copy StaticProperty and Dynamic Data Generic END ==== -->
<!-- ========================================================== -->
<!-- ====================================== -->
<!-- ========== SystemList START ========== -->
<!-- ====================================== -->
<xsl:template name="CommonSystemList">
<SystemList>
<!-- =========================================== -->
<!-- ========== PhysicalMachine START ========== -->
<!-- =========================================== -->
<xsl:element name="PhysicalMachine">
<xsl:attribute name="PhysicalMacAddress">
<xsl:value-of select="//SystemList/NetworkInfo/NIC/@MacAddress" />
</xsl:attribute>
<xsl:attribute name="SmsGuid">
<xsl:value-of select="//SystemList/NetworkInfo/@SmsGuid" />
</xsl:attribute>
<xsl:attribute name="SmsHwId">
<xsl:value-of select="//SystemList/NetworkInfo/@SmsHwId" />
</xsl:attribute>
<xsl:attribute name="Ram">
<xsl:value-of select="//SystemList/HardwareInfo/MemoryInfo/@Ram" />
</xsl:attribute>
<xsl:attribute name="PageFile">
<xsl:value-of select="//SystemList/HardwareInfo/MemoryInfo/@PageFile" />
</xsl:attribute>
<xsl:attribute name="Virtual">
<xsl:value-of select="//SystemList/HardwareInfo/MemoryInfo/@Virtual" />
</xsl:attribute>
<xsl:attribute name="AssetTag">
<xsl:value-of select="//SystemList/ChassisInfo/@AssetTag" />
</xsl:attribute>
<xsl:attribute name="SerialNumber">
<xsl:value-of select="//SystemList/ChassisInfo/@SerialNumber" />
</xsl:attribute>
<xsl:attribute name="ChassisVendor">
<xsl:value-of select="//SystemList/ChassisInfo/@Vendor" />
</xsl:attribute>
<xsl:attribute name="ProcessorName">
<xsl:value-of select="//SystemList/HardwareInfo/ProcessorInfo/@Name" />
</xsl:attribute>
<xsl:attribute name="Mhz">
<xsl:value-of select="//SystemList/HardwareInfo/ProcessorInfo/@Mhz" />
</xsl:attribute>
<xsl:attribute name="ProcessorArchitecture">
<xsl:value-of select="//SystemList/HardwareInfo/ProcessorInfo/@Architecture" />
</xsl:attribute>
<xsl:attribute name="ProcessorVendor">
<xsl:value-of select="//SystemList/HardwareInfo/ProcessorInfo/@Vendor" />
</xsl:attribute>
<!-- ========================================== -->
<!-- ============== OsInfo START ============== -->
<!-- ========================================== -->
<xsl:element name="OsInfo">
<xsl:variable name="MAJORVERSION" select="//SystemList/OsInfo/@MajorVersion" />
<xsl:variable name="MINORVERSION" select="//SystemList/OsInfo/@MinorVersion" />
<xsl:variable name="SERVICEMAJOR" select="//SystemList/OsInfo/@ServicePackMajor" />
<xsl:attribute name="Id">
<xsl:value-of select="concat($MAJORVERSION, '.', $MINORVERSION, '.', $SERVICEMAJOR)" />
</xsl:attribute>
<xsl:attribute name="MacAddress">
<xsl:value-of select="//SystemList/NetworkInfo/NIC/@MacAddress" />
</xsl:attribute>
<xsl:attribute name="MachineName">
<xsl:value-of select="//SystemList/NetworkInfo/@MachineName" />
</xsl:attribute>
<xsl:attribute name="DomainName">
<xsl:value-of select="//SystemList/NetworkInfo/@Domain" />
</xsl:attribute>
<xsl:attribute name="SystemDirectory">
<xsl:value-of select="//SystemList/OsInfo/@SystemDirectory" />
</xsl:attribute>
<xsl:attribute name="WindowsDirectory">
<xsl:value-of select="//SystemList/OsInfo/@WindowsDirectory" />
</xsl:attribute>
<xsl:attribute name="BuildNumber">
<xsl:value-of select="//SystemList/OsInfo/@BuildNumber" />
</xsl:attribute>
<xsl:attribute name="MajorVersion">
<xsl:value-of select="//SystemList/OsInfo/@MajorVersion" />
</xsl:attribute>
<xsl:attribute name="MinorVersion">
<xsl:value-of select="//SystemList/OsInfo/@MinorVersion" />
</xsl:attribute>
<xsl:attribute name="ServicePackMajor">
<xsl:value-of select="//SystemList/OsInfo/@ServicePackMajor" />
</xsl:attribute>
<xsl:attribute name="ServicePackMinor">
<xsl:value-of select="//SystemList/OsInfo/@ServicePackMinor" />
</xsl:attribute>
</xsl:element>
<!-- ======================================== -->
<!-- ============== OsInfo END ============== -->
<!-- ======================================== -->
<!-- ===================================== -->
<!-- ========== IPAddress START ========== -->
<!-- ===================================== -->
<IpAddress>
<xsl:for-each select="//SystemList/NetworkInfo/IP">
<xsl:copy-of select="." />
</xsl:for-each>
</IpAddress>
<!-- =================================== -->
<!-- ========== IPAddress END ========== -->
<!-- =================================== -->
<!-- ===================================== -->
<!-- ======== CustomValues START ========= -->
<!-- ===================================== -->
<xsl:if test="//SystemList/CustomValues/CustomValue">
<CustomValues>
<xsl:copy-of select="//SystemList/CustomValues/CustomValue[1]" />
</CustomValues>
</xsl:if>
<!-- ===================================== -->
<!-- ========= CustomValues END ========== -->
<!-- ===================================== -->
</xsl:element>
<!-- ========================================= -->
<!-- ========== PhysicalMachine END ========== -->
<!-- ========================================= -->
<!-- ====================================== -->
<!-- ============ Devices START =========== -->
<!-- ====================================== -->
<xsl:element name="Devices">
<xsl:for-each select="//SystemList/HardwareInfo/VideoInfo">
<xsl:copy-of select="."/>
</xsl:for-each>
<xsl:for-each select="//SystemList/HardwareInfo/DiskInfo">
<xsl:copy-of select="."/>
</xsl:for-each>
<!-- ============================================== -->
<!-- ========== SystemSpec SECTION START ========== -->
<!-- ============================================== -->
<xsl:if test="//SystemList/HardwareInfo/SystemSpec">
<xsl:element name="SystemSpec">
<xsl:attribute name="MacAddress">
<xsl:value-of select="//SystemList/NetworkInfo/NIC/@MacAddress" />
</xsl:attribute>
<!-- =========================================================== -->
<!-- == BIOS INFORMATION SECTION == -->
<!-- =========================================================== -->
<xsl:element name="BiosInfo">
<xsl:attribute name="Manufacturer">
<xsl:value-of select="//SystemList/HardwareInfo/SystemSpec/PingBackInfo/@manufacturer" />
</xsl:attribute>
<xsl:attribute name="Model">
<xsl:value-of select="//SystemList/HardwareInfo/SystemSpec/PingBackInfo/@model" />
</xsl:attribute>
<xsl:attribute name="BiosName">
<xsl:value-of select="//SystemList/HardwareInfo/SystemSpec/PingBackInfo/@biosName" />
</xsl:attribute>
<xsl:attribute name="BiosVersion">
<xsl:value-of select="//SystemList/HardwareInfo/SystemSpec/PingBackInfo/@biosVersion" />
</xsl:attribute>
<xsl:attribute name="BiosDate">
<xsl:value-of select="//SystemList/HardwareInfo/SystemSpec/PingBackInfo/@biosDate" />
</xsl:attribute>
</xsl:element>
<!-- =========================================================== -->
<!-- == Exclude any of the following: == -->
<!-- == Provider="Microsoft" and Class="System" == -->
<!-- == Provider="Microsoft" and Model starts with "Generic" == -->
<!-- == Manufacturer="Microsoft" and Provider="Microsoft" == -->
<!-- == Manufacturer starts with "(Standard" == -->
<!-- == InstalledDriver element without matchingID attribute == -->
<!-- == == -->
<!-- == HWID starts with "ACPI\PnP" == -->
<!-- == HWID starts with "ACPI\SYN" == -->
<!-- == HWID contains "Genuine" == -->
<!-- == HWID contains "Authen" == -->
<!-- == HWID contains "Virtual_CPU" == -->
<!-- =========================================================== -->
<xsl:for-each select="//Device[
(./HWID) and
not( contains(translate(HWID,$LOWERCASE,$UPPERCASE), 'GENUINE') ) and
not( contains(translate(HWID,$LOWERCASE,$UPPERCASE), 'AUTHEN') ) and
not( contains(translate(HWID,$LOWERCASE,$UPPERCASE), 'VIRTUAL_CPU') ) and
not( starts-with(translate(HWID,$LOWERCASE,$UPPERCASE), 'ACPI\PNP') ) and
not( starts-with(translate(HWID,$LOWERCASE,$UPPERCASE), 'ACPI\SYN') )
]">
<xsl:if test="InstalledDriver[not( @provider='Microsoft' and @class='System' )]">
<xsl:if test="InstalledDriver[not( @provider='Microsoft' and @manufacturer='Microsoft' )]">
<xsl:if test="InstalledDriver[not( @provider='Microsoft' and starts-with(@model, 'Generic ') )]">
<xsl:if test="InstalledDriver[not( starts-with(@manufacturer, '(Standard') )]">
<xsl:if test="InstalledDriver[@matchingID]">
<xsl:element name="Device">
<xsl:attribute name="Id">
<xsl:value-of select="./HWID[1]" />
</xsl:attribute>
<xsl:for-each select="./HWID">
<xsl:element name="HwId">
<xsl:attribute name="Id">
<xsl:value-of select="." />
</xsl:attribute>
<xsl:attribute name="Sequence">
<xsl:value-of select="position()-1" />
</xsl:attribute>
</xsl:element>
</xsl:for-each>
<xsl:for-each select="./InstalledDriver">
<xsl:element name="InstalledDriver">
<xsl:attribute name="MatchingId">
<xsl:value-of select="@matchingID" />
</xsl:attribute>
<xsl:attribute name="DriverVerDate">
<xsl:value-of select="@driverVerDate" />
</xsl:attribute>
<xsl:attribute name="DriverVerVersion">
<xsl:value-of select="@driverVerVersion" />
</xsl:attribute>
<xsl:attribute name="Class">
<xsl:value-of select="@class" />
</xsl:attribute>
<xsl:attribute name="Manufacturer">
<xsl:value-of select="@manufacturer" />
</xsl:attribute>
<xsl:attribute name="Provider">
<xsl:value-of select="@provider" />
</xsl:attribute>
<xsl:attribute name="Model">
<xsl:value-of select="@model" />
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:if>
<!-- ============================================ -->
<!-- ========== SystemSpec SECTION END ========== -->
<!-- ============================================ -->
</xsl:element>
<!-- ====================================== -->
<!-- ============ Devices END ============= -->
<!-- ====================================== -->
</SystemList>
</xsl:template>
<!-- ====================================== -->
<!-- ========== SystemList END ============ -->
<!-- ====================================== -->
</xsl:stylesheet>